home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 May / macformat-024.iso / Shareware City / Developers / kvik / src / parse.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-21  |  892 b   |  41 lines  |  [TEXT/MPS ]

  1. /** parse.h
  2.  ** Parser data types.
  3.  ** Written by Asher Hoskins, 29/10/94
  4.  **/
  5.  
  6. #define MAXLABELLENGTH 5
  7.  
  8. typedef enum {
  9.     T_NUMBER, T_BIGNUM, T_REGISTER, T_DATA_POINTER_DEF, T_DATA_POINTER,
  10.     T_PROGRAM_POINTER_DEF, T_PROGRAM_POINTER, T_CONSTANT, T_CHANNEL,
  11.     T_PROG_POINTER_STORE_DEF, T_ASSIGN, T_POINTS_TO, T_PREVIOUS, T_NEXT,
  12.     T_PLUS, T_MINUS, T_MULTIPLY, T_DIVIDE, T_UMINUS, T_EQUAL, T_NOT_EQUAL,
  13.     T_LESS_THAN, T_GREATER_THAN, T_LESS_THAN_OR_EQ, T_GREATER_THAN_OR_EQ,
  14.     T_NEWLINE, T_ERROR
  15. } token_t;
  16.  
  17. typedef enum {
  18.     PE_TRUNC, PE_BADNUM, PE_BADTOK, PE_BADDIGIT
  19. } parse_error_t;
  20.  
  21. typedef enum {
  22.     TT_NUM, TT_DIG, TT_LAB, TT_TOK
  23. } token_type_t;
  24.  
  25. typedef struct {
  26.     token_t token;
  27.     char format[4];
  28. } token_def_t;
  29.  
  30. typedef struct {
  31.     token_t token;
  32.     union {
  33.         int num;
  34.         char digit;
  35.         char label[MAXLABELLENGTH];
  36.         parse_error_t errnum;
  37.     } val;
  38. } token_val_t;
  39.  
  40. token_val_t get_token(char *, int *);
  41.